#include<iostream>
#include<vector>
#include<stack>
using namespace std;

int trap(vector<int>& numset)
{
	stack<int> st;
	int n=numset.size();
	int ret=0;
	for(int i=0;i<n;i++)
	{
		while(!st.empty()
			&&numset[st.top()]<numset[i])
		{
			int top=st.top();
			st.pop();

			if(st.empty()) break;
			int left=st.top();

			int h=min(numset[i],numset[left])-numset[top];
			int l=i-left-1;

			ret+=l*h;
		}
		st.push(i);
	}
	return ret;
}

int main()
{
	int n;cin>>n;
	vector<int> height(n);

	for(int i=0;i<n;i++)
	{
		cin>>height[i];
	}

	cout<<trap(height)<<endl;
}